{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" }, "colab": { "name": "803_Heat Equation-Crank_Nicolson.ipynb", "provenance": [], "include_colab_link": true } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "HONRDhvRw_KQ" }, "source": [ "# The Implicit Crank-Nicolson Difference Equation for the Heat Equation\n", "\n", "#### John S Butler john.s.butler@tudublin.ie [Course Notes](https://johnsbutler.netlify.com/files/Teaching/Numerical_Analysis_for_Differential_Equations.pdf) [Github](https://github.com/john-s-butler-dit/Numerical-Analysis-Python)\n", "## Overview\n", "This notebook will illustrate the Crank-Nicolson Difference method for the Heat Equation.\n", "## The Heat Equation\n", "The Heat Equation is the first order in time ($t$) and second order in space ($x$) Partial Differential Equation: \n", "\\begin{equation} \\frac{\\partial u}{\\partial t} = \\frac{\\partial^2 u}{\\partial x^2},\\end{equation}\n", "The equation describes heat transfer on a domain\n", "\\begin{equation} \\Omega = \\{ t \\geq, 0\\leq x \\leq 1\\}. \\end{equation}\n", "with an initial condition at time $t=0$ for all $x$ and boundary condition on the left ($x=0$) and right side \n", "\n", "This notebook will illustrate the Crank-Nicolson Difference method for the Heat Equation with the __initial conditions__ \n", "\\begin{equation} u(x,0)=2x, \\ \\ 0 \\leq x \\leq \\frac{1}{2}, \\end{equation}\n", "\\begin{equation} u(x,0)=2(1-x), \\ \\ \\frac{1}{2} \\leq x \\leq 1, \\end{equation}\n", "and __boundary condition__\n", "\\begin{equation} u(0,t)=0, u(1,t)=0. \\end{equation}\n", "## Crank-Nicolson Difference method\n", "\n", "The implicit Crank-Nicolson difference equation of the Heat Equation\n", "is derived by discretising the\n", "\\begin{equation} \\frac{\\partial u_{ij+\\frac{1}{2}}}{\\partial t} = \\frac{\\partial^2 u_{ij+\\frac{1}{2}}}{\\partial x^2},\\end{equation}\n", "around $(x_i,t_{j+\\frac{1}{2}})$ giving the difference equation\n", "\\begin{equation}\n", "\\frac{w_{ij+1}-w_{ij}}{k}=\\frac{1}{2}\\left(\\frac{w_{i+1j+1}-2w_{ij+1}+w_{i-1j+1}}{h^2}+\\frac{w_{i+1j}-2w_{ij}+w_{i-1j}}{h^2}\\right).\n", "\\end{equation}\n", "Rearranging give the difference equation \n", "\\begin{equation}\n", "-rw_{i-1j+1}+(2+2r)w_{ij+1}-rw_{i+1j+1}=rw_{i-1j}+(2-2r)w_{ij}+rw_{i+1j}\n", "\\end{equation}\n", "for $i=1,...9$ where $r=\\frac{k}{h^2}$.\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "x5Gts3Xaw_KT" }, "source": [ "# LIBRARY\n", "# vector manipulation\n", "import numpy as np\n", "# math functions\n", "import math \n", "\n", "# THIS IS FOR PLOTTING\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt # side-stepping mpl backend\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n" ], "execution_count": 1, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "hIXkVJYvw_Ka" }, "source": [ "## Discete Grid\n", "The region $\\Omega$ is discretised into a uniform mesh $\\Omega_h$. In the space $x$ direction into $N$ steps giving a stepsize of\n", "\\begin{equation} h=\\frac{1-0}{N},\\end{equation}\n", "resulting in \n", "\\begin{equation}x[i]=0+ih, \\ \\ \\ i=0,1,...,N,\\end{equation}\n", "and into $N_t$ steps in the time $t$ direction giving a stepsize of \n", "\\begin{equation} k=\\frac{1-0}{N_t}\\end{equation}\n", "resulting in \n", "\\begin{equation}t[i]=0+ik, \\ \\ \\ k=0,...,K.\\end{equation}\n", "The Figure below shows the discrete grid points for $N=10$ and $N_t=100$ , the red dots are the unknown values, the green dots are the known boundary conditions and the blue dots are the known initial conditions of the Heat Equation." ] }, { "cell_type": "code", "metadata": { "id": "OmDfcNTMw_Kb", "outputId": "6235dafd-019f-48be-e582-c43ad4565d67", "colab": { "base_uri": "https://localhost:8080/", "height": 324 } }, "source": [ "N=10\n", "Nt=100\n", "h=1/N\n", "k=1/Nt\n", "r=k/(h*h)\n", "time_steps=15\n", "time=np.arange(0,(time_steps+.5)*k,k)\n", "x=np.arange(0,1.0001,h)\n", "X, Y = np.meshgrid(x, time)\n", "fig = plt.figure()\n", "plt.plot(X,Y,'ro');\n", "plt.plot(x,0*x,'bo',label='Initial Condition');\n", "plt.plot(np.ones(time_steps+1),time,'go',label='Boundary Condition');\n", "plt.plot(x,0*x,'bo');\n", "plt.plot(0*time,time,'go');\n", "plt.xlim((-0.02,1.02))\n", "plt.xlabel('x')\n", "plt.ylabel('time (ms)')\n", "plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", "plt.title(r'Discrete Grid $\\Omega_h,$ h= %s, k=%s'%(h,k),fontsize=24,y=1.08)\n", "plt.show();" ], "execution_count": 2, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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F6x8+YwZM9rX19ez//771zVVQvzggw/etmjRog5btmyxtWvXVr7yyivNXkVxzDHHfPLQQw/tB/D44493aRgo+dFHH1V27dp1Z+fOnetnzJjRfubMmU1eYVJdXb1j//333/GjH/2ox7hx4xrVP+ncuXP9mDFj1o4bN+6grVu3GsDKlSurHnzwwX2OPfbYTa+//nrnVatWVdXV1fHEE0/se8IJJ2zMlvORRx658f77798X4P77798v0zJdunTZuXHjxox/34844ohNP/nJT/YBuO+++/YdPnx41ngtkWuP6bdANfAO8GZKi62x4+9hSq/x9NlYiTn02VjJlF7jS1dtdOxYmDIF+vQBs+BxypTSVRlMevw45KD4yY4fgxxKsR+87LOXfXj7ybcv7dGpx3bD6NGpx/bbT7596WWfvSyv8uUNYygGDRpUM2bMmH733nvvkqqqKpoqId6/f/8dp5122vpBgwbVfvGLX+xXW1u7ubkYN91008o///nPnfr371/7q1/9ap8ePXpsB/jqV7+6oa6uzvr161d79dVX9xo6dOimbOsZM2bMuh49emw/8sgjM5ZGv+OOO1Z069atbuDAgbUDBgyoHTVqVP+uXbvu7NOnz44bbrhhxfHHHz9w8ODBtUOHDt10zjnnfJQt1j333LNsypQpnxk4cGDNihUrMp6WOOWUUz5ZuHBhh0GDBtXcf//9+6TOmzx58rJHHnmk28CBA2t+8Ytf7HfPPfe8n30r5S5rtdFPFzJ7y92PLFTQYlC1URGRllO10fydd955Bx1xxBGbr7zyyrLfZq2uNpriETO7BHgG2NYw0d3z6oGKiIjsyWprawd36NCh/r777ivYf/p7qlw7FNuBW4GJhJeOho/9ipGUiIjInmDOnDnzos4hLnLtUHwL6O/uZX84R0RERFou10GZi4BmB7iIiEhZqK+vr896aaUkT/gz0egGXQ1y7VBsAt42s/saLhnN5bJRMxtlZgvMbJGZXZNhfjszeyyc/7qZVafMO8zMXjWzOWb2jpm1zzFXERHJz+w1a9Z0VadCGtTX19uaNWu6ArObWibXUx5PhS1nZlYJ3A18HlgOvGFm09x9bspiXwfWu3t/MxsD3AycZWZVwKPAue4+08z2IyxM1hJT753AxHensGyvnRy0qZIf9BtXustGISgCNHFicFe8gw4Krj0v5SVrSY8f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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "1yZyZvYMw_Ki" }, "source": [ "## Discrete Initial and Boundary Conditions\n", "\n", "The discrete initial conditions are \n", "\\begin{equation} w[i,0]=2x[i], \\ \\ 0 \\leq x[i] \\leq \\frac{1}{2} \\end{equation}\n", "\\begin{equation} w[i,0]=2(1-x[i]), \\ \\ \\frac{1}{2} \\leq x[i] \\leq 1 \\end{equation}\n", "and the discete boundary conditions are \n", "\\begin{equation} w[0,j]=0, w[10,j]=0, \\end{equation}\n", "where $w[i,j]$ is the numerical approximation of $U(x[i],t[j])$.\n", "\n", "The Figure below plots values of $w[i,0]$ for the inital (blue) and boundary (red) conditions for $t[0]=0.$" ] }, { "cell_type": "code", "metadata": { "id": "3zkAbBUyw_Kj", "outputId": "df55731a-845c-4d96-b72d-06752f478227", "colab": { "base_uri": "https://localhost:8080/", "height": 304 } }, "source": [ "w=np.zeros((N+1,time_steps+1))\n", "b=np.zeros(N-1)\n", "# Initial Condition\n", "for i in range (1,N):\n", " w[i,0]=2*x[i]\n", " if x[i]>0.5:\n", " w[i,0]=2*(1-x[i])\n", " \n", "\n", "# Boundary Condition\n", "for k in range (0,time_steps):\n", " w[0,k]=0\n", " w[N,k]=0\n", "\n", "fig = plt.figure(figsize=(8,4))\n", "plt.plot(x,w[:,0],'o:',label='Initial Condition')\n", "plt.plot(x[[0,N]],w[[0,N],0],'go',label='Boundary Condition t[0]=0')\n", "#plt.plot(x[N],w[N,0],'go')\n", "plt.xlim([-0.1,1.1])\n", "plt.ylim([-0.1,1.1])\n", "plt.title('Intitial and Boundary Condition',fontsize=24)\n", "plt.xlabel('x')\n", "plt.ylabel('w')\n", "plt.legend(loc='best')\n", "plt.show()" ], "execution_count": 3, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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0KGD3/NpdbpSKizk5+fTpEkTTeAqKIkITZo0qXJNkSZxpVTY0ASugll19k9N4koppVSI0iSulFK1JDExsdJpbrnlFrZutXp/ffzxx8uNGzJkSLXXsX//fiZMmECnTp0YMGAAl1xyCd99953Xaati+fLlXHbZZQAsXryYGTNmALBo0aKyzwHw4IMPsnTp0jNenypPG7YppZQXizZkMnPJdvZm59E6KZ6po7syrl+bgK/3lVdeKXv9+OOP88c//rHs/RdffFGtZRpjuOKKK5g0aRLz5s0DYNOmTRw4cICzzjrrzAJ2M2bMGMaMGQNYSfyyyy6jR48eADzyyCM1th51ipbElVLKw6INmdy3cAuZ2XkYIDM7j/sWbmHRhswaWf7y5csZPnw4V199Nd26dWPixIm4nmMxfPhw0tPTmTZtGnl5efTt25eJEycCp0rZJ06cYOTIkfTv35/U1FTefvvtCte3bNkyoqOjue2228qG9enTh6FDh2KMYerUqfTq1YvU1FTmz59faYwffvgh3bp1o3///ixcuLBsma+//jp33HEHX3zxBYsXL2bq1Kn07duXH374gcmTJ7NgwQIAPvnkE/r160dqaio33XQTBQUFgNWt9kMPPVT2ubZt21YTm7tO0ySulApL1760mjfT9wBQVFLKtS+t5q0NGQA8+eE28opKyk2fV1TCI+9+A8CRk4Vc+9Jqlm49AMDB41W/93zDhg08/fTTbN26lZ07d/L555+XGz9jxgzi4+PZuHEjb7zxRrlxcXFxvPXWW6xfv55ly5Zx9913U9HDrL7++msGDBjgddzChQvZuHEjmzZtYunSpUydOpV9+/b5jDE/P59bb72Vd955h3Xr1rF///7TljlkyBDGjBnDzJkz2bhxI506dSobl5+fz+TJk5k/fz5btmyhuLiYF154oWx806ZNWb9+PbfffjuzZs2qfEOGOU3iSinlYV+O96R85GRRja1j4MCBJCcnExERQd++fdm1a5ff8xpj+OMf/0jv3r258MILyczM5MCBA9WKY9WqVVx33XVERkbSokULhg0bxtq1a33GuG3bNjp06ECXLl0QEa6//voqrW/79u106NChrBp/0qRJrFixomz8lVdeCcCAAQOqtE3CVcCuiYvIq8BlwEFjTC8v4wV4BrgEyAUmG2PWByoepVT1OHVtONDm/3Jw2evoyIhy71snxZOZnXfaPG2S4gFoXC+m3PTN68dVef2xsbFlryMjIykuLvZ73jfeeIOsrCzWrVtHdHQ0KSkpFd5f3LNnz7Kq7NqKsbpc66yt9YW6QJbEXwcuqmD8xUAX+28K8EIF0yqlHBDoa8PBaurorsRHR5YbFh8dydTRXWs1jujoaIqKTi/95+Tk0Lx5c6Kjo1m2bBm7d/t8UiUAF1xwAQUFBcyePbts2ObNm1m5ciVDhw5l/vz5lJSUkJWVxYoVKxg4cKDPZXXr1o1du3bxww8/APCf//zH63T169fn+PHjpw3v2rUru3btYseOHQDMnTuXYcOGVRi/8i1gSdwYswI4UsEkY4F/GssaIElEWgUqHqVU1c1cst3rteGZS7Y7FFHtGNevDU9cmUqbpHgEqwT+xJWptV4DMWXKFHr37l3WsM1l4sSJpKenk5qayj//+U+6detW4XJEhLfeeoulS5fSqVMnevbsyX333UfLli254oor6N27N3369OGCCy7gySefpGXLlj6XFRcXx+zZs7n00kvp378/zZs39zrdhAkTmDlzJv369StL+K75X3vtNa655hpSU1OJiIgo1+BOVY1U1BjijBcukgK866M6/V1ghjFmlf3+E+BeY0y6l2mnYJXWadeu3YDKzjqVUjWjw7T38HaEEODHGZfWdjhn5Ntvv6V79+5Oh6FUhbztpyKyzhiT5m36kGjYZoyZbYxJM8akNWvWzOlwlAobre1rwP4OV0rVLieTeCbQ1u19sj1MKRUEjp4s5NbzO5x2bViAwZ2aOBOUUqocJ5P4YuAGsQwCcowx+xyMRyllM8bwy7nrmPfVHh4b16vs2nDrhnEMaJ/EdQPbOR2iUorA3mL2H2A40FREMoCHgGgAY8yLwPtYt5ftwLrF7MZAxaKUqhoR4d6Lu5FXWMJ5XZpy5YBkr9Nt33+cri3r13J0SimXgCVxY8x1lYw3wK8DtX6lVNXty8lj055sLurVigHtG1U4bfquI4x/aTUzr+7DVT6SvFIqsEKiYZtSqnb87ePvuPd/W8jJq7xnsn7tGjHt4m5cnOr7diSlVGBpEldKlZk+pifzpgyiYXx0pdNGRghTzu9EQkwUBcUlzF/7U4X9dyurF7K+ffvSp08f+vfvX+2nklVFSkoKhw4dqvHlFhUVMW3aNLp06UL//v0ZPHgwH3zwQY0s2/Wgl71793L11VcDsHHjRt5///2yadwfe3omsrOz+fvf/172fvny5TRs2JBLLrmkbNicOXPo0qULXbp0Yc6cOWXDR4wYQWJiIunpp90Z7dWRI0cYNWoUXbp0YdSoURw9evSM49ckrlSY25l1gmn/20xhcSkJMVF0b9Wgyst4e8Ne7v3fFtJ3n/lBKVi8seUNUp5OIeLhCFKeTuGNLW9UPlMlXA802bRpE0888QT33XdfDURas0pKSiqfCHjggQfYt28fX3/9NevXr2fRokVee2g7E61bty7rLtYziY8ZM4Zp06ad8To8kzjA0KFDy9Z15MgRHn74Yb788ku++uorHn744bLku2zZMtLSvN6+7dWMGTMYOXIk33//PSNHjqyRkxBN4kqFuXW7j7L02wPs9dJXuL+uSUtmwW2DOTulcQ1G5pw3trzBlHemsDtnNwbD7pzdTHlnSo0kcpdjx47RqJHV7qCix4FedtllZfPccccdvP7664Dvx3YePnyYn/3sZ/Ts2ZNbbrmlXO3IuHHjGDBgAD179izXBWtiYiJ33303ffr04bHHHmPcuHFl4z7++GOuuOKKcrHn5uby8ssv89xzz5X1dd6iRQvGjx8PWF2xpqam0qtXL+69995y67n//vvp06cPgwYNKntoy48//sjgwYNJTU3lT3/6U9n0u3btolevXhQWFvLggw8yf/58+vbty/z588see+qa7oILLqB3796MHDmSn376CYDJkydz5513MmTIEDp27Oi1//hp06bxww8/0LdvX6ZOnXra+CVLljBq1CgaN25Mo0aNGDVqFB9++KGXb7Ryb7/9NpMmTQKsB78sWrSoWstxp0lcqTBVUmod3K9Ja8sndw8npWm9ai9LREizE/i3+44xffE3ZcsPRfd/cj+5RbnlhuUW5XL/J/ef0XJdzwfv1q0bt9xyCw888ABQ8eNAK+LtsZ0PP/ww5513Ht988w1XXHFFWUIDePXVV1m3bh3p6ek8++yzHD58GICTJ09yzjnnsGnTJh544AG2bdtGVlYWAK+99ho33XRTufXu2LGDdu3a0aDB6bU2e/fu5d577+XTTz9l48aNrF27tixZnTx5kkGDBrFp0ybOP/98Xn75ZQDuuusubr/9drZs2UKrVqf3vh0TE8MjjzzCtddey8aNG7n22mvLjf/Nb37DpEmT2Lx5MxMnTuTOO+8sG7dv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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "PxhxU6Xlw_Km" }, "source": [ "## The Implicit Crank-Nicolson Difference Equation\n", "The implicit Crank-Nicolson difference equation of the Heat Equation\n", "is derived by discretising the\n", "\\begin{equation} \\frac{\\partial u_{ij+\\frac{1}{2}}}{\\partial t} = \\frac{\\partial^2 u_{ij+\\frac{1}{2}}}{\\partial x^2},\\end{equation}\n", "around $(x_i,t_{j+\\frac{1}{2}})$ giving the difference equation\n", "\\begin{equation}\n", "\\frac{w_{ij+1}-w_{ij}}{k}=\\frac{1}{2}\\left(\\frac{w_{i+1j+1}-2w_{ij+1}+w_{i-1j+1}}{h^2}+\\frac{w_{i+1j}-2w_{ij}+w_{i-1j}}{h^2}\\right)\n", "\\end{equation}\n", "Rearranging the equation we get\n", "\\begin{equation}\n", "-rw_{i-1j+1}+(2+2r)w_{ij+1}-rw_{i+1j+1}=rw_{i-1j}+(2-2r)w_{ij}+rw_{i+1j}\n", "\\end{equation}\n", "for $i=1,...9$ where $r=\\frac{k}{h^2}$.\n", "\n", "This gives the formula for the unknown term $w_{ij+1}$ at the $(ij+1)$ mesh points\n", "in terms of $x[i]$ along the jth time row.\n", "\n", "Hence we can calculate the unknown pivotal values of $w$ along the first row of $j=1$ in terms of the known boundary conditions.\n", "\n", "This can be written in matrix form \n", "\\begin{equation} A\\mathbf{w}_{j+1}=B\\mathbf{w}_{j} +\\mathbf{b}_{j}+\\mathbf{b}_{j+1} \\end{equation}\n", "for which $A$ is a $9\\times9$ matrix:\n", "\\begin{equation}\n", "\\left(\\begin{array}{cccc cccc}\n", "2+2r&-r& 0&0&0 &0&0&0\\\\\n", "-r&2+2r&-r&0&0&0 &0&0&0\\\\\n", "0&-r&2+2r &-r&0&0& 0&0&0\\\\\n", "0&0&-r&2+2r &-r&0&0& 0&0\\\\\n", "0&0&0&-r&2+2r &-r&0&0& 0\\\\\n", "0&0&0&0&-r&2+2r &-r&0&0\\\\\n", "0&0&0&0&0&-r&2+2r &-r&0\\\\\n", "0&0&0&0&0&0&-r&2+2r&-r\\\\\n", "0&0&0&0&0&0&0&-r&2+2r\\\\\n", "\\end{array}\\right)\n", "\\left(\\begin{array}{c}\n", "w_{1j+1}\\\\\n", "w_{2j+1}\\\\\n", "w_{3j+1}\\\\\n", "w_{4j+1}\\\\\n", "w_{5j+1}\\\\\n", "w_{6j+1}\\\\\n", "w_{7j+1}\\\\\n", "w_{8j+1}\\\\\n", "w_{9j+1}\\\\\n", "\\end{array}\\right)=\n", "\\left(\\begin{array}{cccc cccc}\n", "2-2r&r& 0&0&0 &0&0&0\\\\\n", "r&2-2r&r&0&0&0 &0&0&0\\\\\n", "0&r&2-2r &r&0&0& 0&0&0\\\\\n", "0&0&r&2-2r &r&0&0& 0&0\\\\\n", "0&0&0&r&2-2r &r&0&0& 0\\\\\n", "0&0&0&0&r&2-2r &r&0&0\\\\\n", "0&0&0&0&0&r&2-2r &r&0\\\\\n", "0&0&0&0&0&0&r&2-2r&r\\\\\n", "0&0&0&0&0&0&0&r&2-2r\\\\\n", "\\end{array}\\right)\n", "\\left(\\begin{array}{c}\n", "w_{1j}\\\\\n", "w_{2j}\\\\\n", "w_{3j}\\\\\n", "w_{4j}\\\\\n", "w_{5j}\\\\\n", "w_{6j}\\\\\n", "w_{7j}\\\\\n", "w_{8j}\\\\\n", "w_{9j}\\\\\n", "\\end{array}\\right)+\n", "\\left(\\begin{array}{c}\n", "rw_{0j}\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "rw_{10j}\\\\\n", "\\end{array}\\right)+\n", "\\left(\\begin{array}{c}\n", "rw_{0j+1}\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "0\\\\\n", "rw_{10j+1}\\\\\n", "\\end{array}\\right).\n", "\\end{equation}\n", "It is assumed that the boundary values $w_{0j}$ and $w_{10j}$ are known for $j=1,2,...$, and $w_{i0}$ for $i=0,...,10$ is the initial condition.\n", "\n", "The Figure below shows the values of the $9\\times 9$ matrix in colour plot form for $r=\\frac{k}{h^2}$." ] }, { "cell_type": "code", "metadata": { "id": "RkqqGp7Yw_Kn", "outputId": "9eca8738-1f3c-4195-ea76-a9b6f01201d8", "colab": { "base_uri": "https://localhost:8080/", "height": 297 } }, "source": [ "A=np.zeros((N-1,N-1))\n", "B=np.zeros((N-1,N-1))\n", "for i in range (0,N-1):\n", " A[i,i]=2+2*r\n", " B[i,i]=2-2*r\n", "\n", "for i in range (0,N-2): \n", " A[i+1,i]=-r\n", " A[i,i+1]=-r\n", " B[i+1,i]=r\n", " B[i,i+1]=r\n", " \n", "Ainv=np.linalg.inv(A) \n", "fig = plt.figure(figsize=(12,4));\n", "plt.subplot(121)\n", "plt.imshow(A,interpolation='none');\n", "plt.xticks(np.arange(N-1), np.arange(1,N-0.9,1));\n", "plt.yticks(np.arange(N-1), np.arange(1,N-0.9,1));\n", "clb=plt.colorbar();\n", "clb.set_label('Matrix elements values');\n", "#clb.set_clim((-1,1));\n", "plt.title('Matrix A r=%s'%(np.round(r,3)),fontsize=24)\n", "\n", "plt.subplot(122)\n", "plt.imshow(B,interpolation='none');\n", "plt.xticks(np.arange(N-1), np.arange(1,N-0.9,1));\n", "plt.yticks(np.arange(N-1), np.arange(1,N-0.9,1));\n", "clb=plt.colorbar();\n", "clb.set_label('Matrix elements values');\n", "#clb.set_clim((-1,1));\n", "plt.title(r'Matrix $B$ r=%s'%(np.round(r,3)),fontsize=24)\n", "fig.tight_layout()\n", "plt.show();" ], "execution_count": 4, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "18m6qkgLw_Kp" }, "source": [ "## Results\n", "To numerically approximate the solution at $t[1]$ the matrix equation becomes \n", "\\begin{equation} \\mathbf{w}_{1}=A^{-1}(B\\mathbf{w}_{0} +\\mathbf{b}_{1}+\\mathbf{b}_{0}) \\end{equation}\n", "where all the right hand side is known. \n", "To approximate solution at time $t[2]$ we use the matrix equation\n", "\\begin{equation}\\mathbf{w}_{2}=A^{-1}(B\\mathbf{w}_{1}+\\mathbf{b}_{2} +\\mathbf{b}_{1}). \\end{equation}\n", "Each set of numerical solutions $w[i,j]$ for all $i$ at the previous time step is used to approximate the solution $w[i,j+1]$. \n", "The left and right plot below show the numerical approximation $w[i,j]$ of the Heat Equation using the Crank-Nicolson method for $x[i]$ for $i=0,...,10$ and time steps $t[j]$ for $j=1,...,15$." ] }, { "cell_type": "code", "metadata": { "id": "S4Mf3G9iw_Kq", "outputId": "a2114c3d-88ab-4ae5-bccb-e011d2d44f78", "colab": { "base_uri": "https://localhost:8080/", "height": 487 } }, "source": [ "fig = plt.figure(figsize=(12,6))\n", "plt.subplot(121)\n", "for j in range (0,time_steps+1):\n", " b[0]=r*w[0,j-1]+r*w[0,j]\n", " b[N-2]=r*w[N,j-1]+r*w[N,j]\n", " v=np.dot(B,w[1:(N),j-1])\n", " w[1:(N),j]=np.dot(Ainv,v+b)\n", " plt.plot(x,w[:,j],'o:',label='t[%s]=%s'%(j,time[j]))\n", "plt.xlabel('x')\n", "plt.ylabel('w')\n", "#plt.legend(loc='bottom', bbox_to_anchor=(0.5, -0.1))\n", "plt.legend(bbox_to_anchor=(-.4, 1), loc=2, borderaxespad=0.)\n", "\n", "plt.subplot(122)\n", "plt.imshow(w.transpose())\n", "plt.xticks(np.arange(len(x)), x)\n", "plt.yticks(np.arange(len(time)), time)\n", "plt.xlabel('x')\n", "plt.ylabel('time')\n", "clb=plt.colorbar()\n", "clb.set_label('Temperature (w)')\n", "plt.suptitle('Numerical Solution of the Heat Equation r=%s'%(np.round(r,3)),fontsize=24,y=1.08)\n", "fig.tight_layout()\n", "plt.show()" ], "execution_count": 5, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "metadata": { "id": "mLyoVPhew_Ks" }, "source": [ "## Local Trunction Error\n", "The local truncation error of the Crank-Nicoloson we approximate \n", "\\begin{equation}\n", "\\frac{\\partial U}{\\partial t} - \\frac{\\partial^2 U}{\\partial x^2}=0,\n", "\\end{equation} \n", "with\n", "\n", "\\begin{equation}\n", "F_{ij+\\frac{1}{2}}(w)=\\frac{w_{ij+1}-w_{ij}}{k}-\\frac{1}{2}\\left(\\frac{w_{i+1j}-2w_{ij}+w_{i-1j}}{h^2}\n", "+\\frac{w_{i+1j+1}-2w_{ij+1}+w_{i-1j+1}}{h^2}\n", "\\right)=0.\\end{equation} \n", "Subbing the exact answer into the difference equation gives the truncation error\n", "\\begin{equation}\n", "T_{ij+\\frac{1}{2}}=F_{ij+\\frac{1}{2}}(U)=\\frac{U_{ij+1}-U_{ij}}{k}-\\frac{1}{2}\\left(\\frac{U_{i+1j}-2U_{ij}+U_{i-1j}}{h^2}+\\frac{U_{i+1j+1}-2U_{ij+1}+U_{i-1j+1}}{h^2}\\right),\n", "\\end{equation}\n", "simplify\n", "\\begin{equation}\n", "U_{ij+\\frac{1}{2}}=\\frac{U_{ij+1}+U_{ij}}{2},\n", "\\end{equation}\n", "substitute into equation\n", "\\begin{equation}\n", "T_{ij+\\frac{1}{2}}=F_{ij+\\frac{1}{2}}(U)=\\frac{U_{ij+1}-U_{ij}}{k}-\\frac{U_{i+1j+\\frac{1}{2}}-2U_{ij+\\frac{1}{2}}+U_{i-1j+\\frac{1}{2}}}{h^2},\n", "\\end{equation} \n", "By Taylors expansions we have\n", "\\begin{eqnarray*}\n", "U_{i+1j+\\frac{1}{2}}&=&U((i+1)h,(j+\\frac{1}{2})k)=U(x_i+h,t_j+\\frac{1}{2}k)\\\\\n", "&=&U_{ij+\\frac{1}{2}}+h\\left(\\frac{\\partial U}{\\partial x} \\right)_{ij+\\frac{1}{2}}+\\frac{h^2}{2}\\left(\\frac{\\partial^2 U}{\\partial x^2} \\right)_{ij+\\frac{1}{2}}+\\frac{h^3}{6}\\left(\\frac{\\partial^3 U}{\\partial x^3} \\right)_{ij+\\frac{1}{2}} +...\\\\\n", "U_{i-1j+\\frac{1}{2}}&=&U((i-1)h,(j+\\frac{1}{2})k)=U(x_i-h,t_j+\\frac{1}{2}k)\\\\\n", "&=&U_{ij+\\frac{1}{2}}-h\\left(\\frac{\\partial U}{\\partial x} \\right)_{ij+\\frac{1}{2}}+\\frac{h^2}{2}\\left(\\frac{\\partial^2 U}{\\partial x^2} \\right)_{ij+\\frac{1}{2}}-\\frac{h^3}{6}\\left(\\frac{\\partial^3 U}{\\partial x^3} \\right)_{ij+\\frac{1}{2}} +...\\\\\n", "U_{ij+1}&=&U(ih,(j+1)k)=U(x_i,t_j+k)\\\\\n", "&=&U_{ij+\\frac{1}{2}}+\\frac{k}{2}\\left(\\frac{\\partial U}{\\partial t} \\right)_{ij+\\frac{1}{2}}+\\frac{(\\frac{k}{2})^2}{2}\\left(\\frac{\\partial^2 U}{\\partial t^2} \\right)_{ij+\\frac{1}{2}}+\\frac{(\\frac{k}{2})^3}{6}\\left(\\frac{\\partial^3 U}{\\partial t^3} \\right)_{ij+\\frac{1}{2}} +...\\\\\n", "U_{ij-1}&=&U(ih,(j-1)k)=U(x_i,t_j-k)\\\\\n", "&=&U_{ij+\\frac{1}{2}}-\\frac{k}{2}\\left(\\frac{\\partial U}{\\partial t} \\right)_{ij+\\frac{1}{2}}+\\frac{(\\frac{k}{2})^2}{2}\\left(\\frac{\\partial^2 U}{\\partial t^2} \\right)_{ij+\\frac{1}{2}}-\\frac{(\\frac{k}{2})^3}{6}\\left(\\frac{\\partial^3 U}{\\partial t^3} \\right)_{ij+\\frac{1}{2}} +...\n", "\\end{eqnarray*}\n", "\n", "substitution into the expression for $T_{ij+\\frac{1}{2}}$ then gives\n", "\n", "\\begin{eqnarray*}\n", "T_{ij+\\frac{1}{2}}&=&\\left(\\frac{\\partial U}{\\partial t} - \\frac{\\partial^2 U}{\\partial x^2} \\right)_{ij+\\frac{1}{2}}\n", "-\\frac{h^2}{12}\\left(\\frac{\\partial^4 U}{\\partial x^4} \\right)_{ij+\\frac{1}{2}}\\\\\n", "& &\t+\\frac{k^2}{24}\\left(\\frac{\\partial^3 U}{\\partial t^3} \\right)_{ij+\\frac{1}{2}}\n", "-\\frac{h^4}{360}\\left(\\frac{\\partial^6 U}{\\partial x^6} \\right)_{ij+\\frac{1}{2}}+ ...\n", "\\end{eqnarray*}\n", "But $U$ is the solution to the differential equation so\n", "\\begin{equation} \\left(\\frac{\\partial U}{\\partial t} - \\frac{\\partial^2 U}{\\partial x^2} \\right)_{ij+\\frac{1}{2}}=0,\\end{equation} \n", "\n", "the principal part of the local truncation error is \n", "\n", "\\begin{equation}\n", "\\frac{k^2}{24}\\left(\\frac{\\partial^3 U}{\\partial t^3} \\right)_{ij+\\frac{1}{2}}-\\frac{h^2}{12}\\left(\\frac{\\partial^4 U}{\\partial x^4} \\right)_{ij+\\frac{1}{2}}.\n", "\\end{equation} \n", "\n", "\n", "\n", "Hence the truncation error is\n", "\\begin{equation} \n", "T_{ij}=O(k^2)+O(h^2).\n", "\\end{equation} \n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "id": "RoClj8p7w_Ks" }, "source": [ "\n", "## Stability Analyis \n", "\n", "To investigating the stability of the fully implicit Crank Nicolson difference method of the Heat Equation, we will use the von Neumann method.\n", "The difference equation is:\n", "\\begin{equation}\\frac{1}{k}(w_{pq+1}-w_{pq})=\\frac{1}{2}\\left(\\frac{1}{h_x^2}(w_{p-1q+1}-2w_{pq+1}+w_{p+1q+1})+\\frac{1}{h_x^2}(w_{p-1q}-2w_{pq}+w_{p+1q})\\right),\\end{equation}\n", "approximating \n", "\\begin{equation}\\frac{\\partial U}{\\partial t}=\\frac{\\partial^2 U}{\\partial x^2}\\end{equation}\n", "\n", "at $(ph,(q+\\frac{1}{2})k)$. Substituting $w_{pq}=e^{i\\beta x}\\xi^{q}$ into the difference equation gives: \n", "\\begin{equation}e^{i\\beta ph}\\xi^{q+1}-e^{i\\beta ph}\\xi^{q}=\\frac{1}{2}\\left(r\\{e^{i\\beta (p-1)h}\\xi^{q+1}-2e^{i\\beta ph}\\xi^{q+1}+e^{i\\beta (p+1)h}\\xi^{q+1}+e^{i\\beta (p-1)h}\\xi^{q}-2e^{i\\beta ph}\\xi^{q}+e^{i\\beta (p+1)h}\\xi^{q} \\right) \\}\n", "\\end{equation}\n", "\n", "where $r=\\frac{k}{h_x^2}$. Divide across by $e^{i\\beta (p)h}\\xi^{q}$ leads to\n", "\n", "\\begin{equation} \\xi-1=r \\xi (e^{i\\beta (-1)h} -2+e^{i\\beta h})+r (e^{i\\beta (-1)h} -2+e^{i\\beta h}), \\end{equation}\n", "\n", "\\begin{equation}\\xi-\\xi r (2\\cos(\\beta h)-2)= 1+r (2\\cos(\\beta h)-2),\\end{equation}\n", "\n", "\\begin{equation}\\xi(1+4r\\sin^2(\\beta\\frac{h}{2})) =1-4r\\sin^2(\\beta\\frac{h}{2})\\end{equation}\n", "Hence \n", "\\begin{equation}\\xi=\\frac{1-4r\\sin^2(\\beta\\frac{h}{2})}{(1+4r\\sin^2(\\beta\\frac{h}{2}))} \\leq 1\\end{equation}\n", "therefore the equation is unconditionally stable as $0 < \\xi \\leq 1$ for all $r$ and all $\\beta$ .\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "D1u3522Xw_Kt" }, "source": [ "## References\n", "[1] G D Smith Numerical Solution of Partial Differential Equations: Finite Difference Method Oxford 1992\n", "\n", "[2] Butler, J. (2019). John S Butler Numerical Methods for Differential Equations. [online] Maths.dit.ie. Available at: http://www.maths.dit.ie/~johnbutler/Teaching_NumericalMethods.html [Accessed 14 Mar. 2019].\n", "\n", "[3] Wikipedia contributors. (2019, February 22). Heat equation. In Wikipedia, The Free Encyclopedia. Available at: https://en.wikipedia.org/w/index.php?title=Heat_equation&oldid=884580138 [Accessed 14 Mar. 2019].\n", "\n", "\n" ] }, { "cell_type": "code", "metadata": { "id": "7SsHHKocw_Kt" }, "source": [ "" ], "execution_count": 5, "outputs": [] } ] }